package start.spring.basic.job.quartz;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import org.quartz.SchedulerException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import lombok.extern.slf4j.Slf4j;

/**
 * ****************************************************************************
 * 自动任务初始化加载类
 *
 * @author(作者)：xuyongyun	
 * @date(创建日期)：2018年8月30日
 ******************************************************************************
 */
@Slf4j
@Component
public class TaskLoad {
	
	@Autowired
    private TaskService taskService;
	
	/**
	 * 启动初始化方法
	 */
	@PostConstruct
	public void initTask(){
		
		List<TaskBean> jobs = taskService.getTaskFromDb();
		if(jobs!=null&&jobs.size()>0){
			int count = 0;
			for(TaskBean job:jobs){
				if(job!=null){
					try {
						taskService.addJob(job);
						count++;
					} catch (ClassNotFoundException | SchedulerException e) {
						log.error("加载job出错",e);
						continue;
					}
				}
			}
			log.info("TaskLoad-->加载的job数量={}", count);
		}else {
			log.info("TaskLoad-->未获取到需要加载的job！");
		}
    }
	
	/**
	 * 停止销毁方法
	 */
	@PreDestroy
	public void destroyTask(){
		if(taskService!=null){
			try {
				taskService.delAllJob();
			} catch (SchedulerException e) {
				log.error("TaskLoad-->移除job出错!",e);
			}
		}
	}
}
